Unit Testing হলো সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনের ছোট ছোট ইউনিট বা কম্পোনেন্টের কার্যকারিতা পরীক্ষা করে। xUnit হলো একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক, যা ASP.NET Core অ্যাপের জন্য সহজে Unit Test লিখতে সাহায্য করে। এটি দ্রুত, মডিউলার, এবং সহজবোধ্য টেস্টিং ফিচার প্রদান করে।
xUnit ইনস্টল করা
xUnit ব্যবহার করতে আপনার ASP.NET Core প্রজেক্টে xUnit NuGet প্যাকেজ ইনস্টল করতে হবে।
টেস্ট প্রজেক্ট তৈরি করা
একটি আলাদা টেস্ট প্রজেক্ট তৈরি করতে নিচের কমান্ড ব্যবহার করুন:
dotnet new xunit -n MyApp.Tests
MyApp.Tests টেস্ট প্রজেক্টের জন্য নির্ধারিত নাম।
ASP.NET Core অ্যাপের রেফারেন্স যোগ করা
আপনার মূল অ্যাপ্লিকেশন প্রজেক্টকে টেস্ট প্রজেক্টে রেফারেন্স হিসেবে যোগ করুন:
dotnet add reference ../MyApp/MyApp.csproj
টেস্ট ক্লাস এবং মেথড তৈরি
উদাহরণ: ASP.NET Core Service ক্লাস
একটি সাধারণ CalculatorService ক্লাস, যা যোগ এবং বিয়োগ ফাংশনালিটি প্রদান করে:
public class CalculatorService
{
public int Add(int a, int b) => a + b;
public int Subtract(int a, int b) => a - b;
}
xUnit ব্যবহার করে Unit Test লেখা
MyApp.Tests প্রজেক্টে একটি টেস্ট ক্লাস তৈরি করুন (যেমন CalculatorServiceTests.cs) এবং টেস্ট লিখুন।
using Xunit;
public class CalculatorServiceTests
{
[Fact]
public void Add_ReturnsSumOfTwoNumbers()
{
// Arrange
var calculator = new CalculatorService();
int a = 5, b = 3;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(8, result);
}
[Fact]
public void Subtract_ReturnsDifferenceOfTwoNumbers()
{
// Arrange
var calculator = new CalculatorService();
int a = 10, b = 4;
// Act
int result = calculator.Subtract(a, b);
// Assert
Assert.Equal(6, result);
}
}
ব্যাখ্যা:
- Arrange: টেস্টের জন্য প্রয়োজনীয় ডেটা এবং অবজেক্ট তৈরি করা।
- Act: টেস্ট করা মেথড কল করা।
- Assert: মেথডের আউটপুট যাচাই করা।
Dependency Injection এর সাথে Unit Test
ASP.NET Core অ্যাপ্লিকেশন সাধারণত Dependency Injection (DI) ব্যবহার করে। টেস্টিংয়ে DI ব্যবহারের জন্য Mocking ফ্রেমওয়ার্ক (যেমন Moq) প্রয়োজন।
উদাহরণ: DI এর মাধ্যমে সার্ভিস টেস্ট
IWeatherService ইন্টারফেস এবং একটি ইমপ্লিমেন্টেশন:
public interface IWeatherService
{
string GetWeather();
}
public class WeatherService : IWeatherService
{
public string GetWeather() => "Sunny";
}
Controller:
[ApiController]
[Route("[controller]")]
public class WeatherController : ControllerBase
{
private readonly IWeatherService _weatherService;
public WeatherController(IWeatherService weatherService)
{
_weatherService = weatherService;
}
[HttpGet]
public string Get()
{
return _weatherService.GetWeather();
}
}
টেস্ট লিখা Moq ব্যবহার করে
Moq ব্যবহার করে DI এর জন্য Mock করা যায়। Moq প্যাকেজ ইন্সটল করুন:
dotnet add package Moq
টেস্ট ক্লাস:
using Moq;
using Xunit;
public class WeatherControllerTests
{
[Fact]
public void Get_ReturnsWeatherFromService()
{
// Arrange
var mockWeatherService = new Mock<IWeatherService>();
mockWeatherService.Setup(service => service.GetWeather()).Returns("Cloudy");
var controller = new WeatherController(mockWeatherService.Object);
// Act
var result = controller.Get();
// Assert
Assert.Equal("Cloudy", result);
}
}
ব্যাখ্যা:
- Mock: IWeatherService ইন্টারফেসের একটি মক তৈরি করা।
- Setup: মকের মেথডের জন্য প্রত্যাশিত রিটার্ন ভ্যালু নির্ধারণ করা।
- Assert.Equal: Controller এর আউটপুট যাচাই করা।
Unit Test রান করা
টেস্ট চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:
dotnet test
ফলাফল
Unit Test সফলভাবে রান হলে নিচের আউটপুট দেখতে পাবেন:
Passed! 2 tests.
Unit Testing এর সুবিধা
- রিগ্রেশন এড়ানো: কোড পরিবর্তনের ফলে বিদ্যমান ফিচারে সমস্যা এড়ানো যায়।
- কোডের মান বৃদ্ধি: কোড আরও মডিউলার এবং টেস্টেবল হয়।
- ডেভেলপমেন্ট সময় বাঁচানো: সমস্যা দ্রুত সনাক্ত করা সম্ভব।
xUnit ব্যবহার করে ASP.NET Core অ্যাপের জন্য সহজেই শক্তিশালী Unit Test তৈরি করা যায়, যা অ্যাপ্লিকেশনের মান এবং স্থায়িত্ব বাড়ায়।
Read more